package com.linkhub.oms.admin.modules.logistic.freighttemplate.service;

import com.linkhub.oms.admin.modules.logistic.freighttemplate.domain.param.LogisticFreightTemplateAddParam;
import com.linkhub.oms.admin.modules.logistic.freighttemplate.domain.param.LogisticFreightTemplateQueryParam;
import com.linkhub.oms.admin.modules.logistic.freighttemplate.domain.param.LogisticFreightTemplateUpdParam;
import com.linkhub.oms.admin.modules.logistic.freighttemplate.domain.vo.LogisticFreightTemplateDetailVO;
import com.linkhub.oms.admin.modules.logistic.freighttemplate.domain.vo.LogisticFreightTemplateExcelVO;
import com.linkhub.oms.admin.modules.logistic.freighttemplate.domain.vo.LogisticFreightTemplateVO;
import com.linkhub.oms.common.response.PageDTO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 * 物流运费模板 服务类
 * </p>
 *
 * @author Frank
 */
public interface LogisticFreightTemplateBsService {
    /**
     * 运费模板分页
     *
     * @param queryParam queryParam
     * @return PageDTO<LogisticFreightTemplateVO>
     */
    PageDTO<LogisticFreightTemplateVO> getLogisticFreightTemplatePage(LogisticFreightTemplateQueryParam queryParam);

    /**
     * 运费模板详情
     *
     * @param id id
     * @return LogisticFreightTemplateDetailVO
     */
    LogisticFreightTemplateDetailVO getLogisticFreightTemplateDetail(Long id);

    /**
     * 新建运费模板
     *
     * @param logisticFreightTemplateAddParam logisticFreightTemplateAddParam
     */
    void addLogisticFreightTemplate(LogisticFreightTemplateAddParam logisticFreightTemplateAddParam);

    /**
     * 更新运费模板
     *
     * @param logisticFreightTemplateUpdParam logisticFreightTemplateUpdParam
     */
    void updLogisticFreightTemplate(LogisticFreightTemplateUpdParam logisticFreightTemplateUpdParam);

    /**
     * 删除运费模板
     *
     * @param id id
     */
    void delLogisticFreightTemplate(Long id);

    /**
     * 查询国家分区
     *
     * @param countryCode countryCode
     * @return List<String>
     */
    List<String> getCountryPartition(String countryCode);

    /**
     * 导入运费模板
     *
     * @param file   file
     * @param userId userId
     * @return LogisticFreightTemplateExcelVO
     */
    LogisticFreightTemplateExcelVO importExcel(MultipartFile file, String userId);
}
